使用激活状态数据监视图的活动 您所在的位置:网站首页 stateflow matlab 使用激活状态数据监视图的活动

使用激活状态数据监视图的活动

2024-05-06 09:22| 来源: 网络整理| 查看: 265

交通信号控制器建模

此示例使用激活状态数据为一对交通信号灯的控制器系统建模。

在 Traffic Controller 图中,由两个平行的子图管理着控制交通信号灯的逻辑。这两个子图具有相同的层次结构,即包含三个子状态:Red、Yellow 和 Green。输出数据 Light1 和 Light2 对应于子图中的激活子状态。这些信号:

确定动画交通信号灯的阶段。

帮助统计在每个信号灯下等待的汽车数量。

驱动一个 Safety Assertion 子系统,确认两个交通信号灯永远不会同时呈绿色。

要查看 Traffic Controller 图中的子图,请点击图左下角的箭头。

每个交通控制器循环遍历其子状态,从 Red 到 Green 到 Yellow,然后再返回到 Red。每个状态对应于交通信号灯循环中的一个阶段。输出信号 Light1 和 Light2 指示在任意给定时刻哪个状态被激活。

红灯

当 Red 状态被激活时,交通信号灯循环开始。经过短暂的延迟后,控制器检查在十字路口等待的汽车。如果检测到有至少一辆汽车或者经过了一定的时间,则控制器会将 greenLightRequest 设置为 true,以此来请求绿灯。在发出请求后,控制器继续保持 Red 状态较短的一段时间,直到检测到另一个交通信号为红色,控制器才会将状态转移到 Green。

绿灯

当 Green 状态被激活时,控制器会将 greenLightRequest 设置为 false,以此来取消其绿灯请求。控制器将 greenLightLocked 设置为 true,以防止另一个交通信号变绿。在短暂延迟后,控制器会检查是否有来自另一个控制器的绿灯请求。如果它收到请求或经过了一定的时间,则控制器会转移到 Yellow 状态。

黄灯

当 Yellow 状态变为非激活时,控制器会将 greenLightLocked 设置为 false,指示另一个交通信号灯可以安全地变绿。在转移到 Red 状态之前,控制器将保持 Yellow 状态一定的时间。然后开始下一个交通信号灯循环。

交通信号灯的时序

交通信号灯循环的时序通过几个参数来定义。要更改交通信号灯的计时,请双击 Traffic Controller 图,并在对话框中输入以下参数的新值:

REDDELAY - 从红灯激活到控制器检查十字路口等待车辆之间的时间长度。此值也是控制器发出绿灯请求后,交通信号灯可以变绿的最短时间长度。默认值为 6 秒。

MAXREDDELAY - 控制器在发出绿灯请求前检查车辆的最长时间。默认值为 360 秒。

GREENDELAY - 交通信号灯保持绿色的最长时间。默认值为 180 秒。

MINGREENDELAY - 交通信号灯保持绿色的最短时间长度。默认值为 120 秒。

YELLOWDELAY - 交通信号灯保持黄色的时间长度。默认值为 15 秒。

探索示例

点击左下角的箭头打开图。

在符号窗格中,选择 greenLightRequested。然后,在属性检查器中的记录下,选择记录信号数据。

对 greenLightLocked、Light1 和 Light2 重复上一步骤。

在仿真选项卡中,点击运行。

在仿真选项卡中的查看结果下,点击数据检查器。

在仿真数据检查器中,将记录的信号显示在单独的坐标区中。布尔信号 greenLightRequested 和 greenLightLocked 显示为数值 0 或 1。状态活动信号 Light1 和 Light2 为枚举数据,其值为 Green、Yellow、Red 和 None。

要在仿真过程中跟踪图活动,可以使用仿真数据检查器中的缩放和光标按钮。例如,下面列出了仿真前 300 秒内的关键时刻:

- 在仿真开始时,两个交通信号灯都为红色。Light1 和 Light2 为 Red,greenLightRequested 为 false,greenLightLocked 为 false。

- 6 秒(REDDELAY 的默认值)后,两条街道上都有汽车在等待,因此两个交通信号灯都请求绿灯。Light1 和 Light2 仍为 Red,greenLightRequested 为 true,greenLightLocked 为 false。

- 再过 6 秒(REDDELAY 的默认值)后,信号灯 1 变为绿色,取消绿灯请求,并将 greenLightLocked 设置为 true。然后,信号灯 2 请求绿灯。Light1 为 Green,Light2 为 Red,greenLightRequested 变为 false 然后为 true,greenLightLocked 为 true。

- 120 秒(MINGREENDELAY 的默认值)后,信号灯 1 变为黄色。Light1 为 Yellow,Light2 为 Red,greenLightRequested 为 true,greenLightLocked 为 true。

- 15 秒(YELLOWDELAY 的默认值)后,信号灯 1 变为红色,并将 greenLightLocked 设置为 false。然后,信号灯 2 变为绿色,取消绿灯请求,并将 greenLightLocked 设置为 true。Light1 为 Red,Light2 为 Green,greenLightRequested 为 false,greenLightLocked 变为 false 然后为 true。

- 6 秒(REDDELAY 的默认值)后,信号灯 1 请求绿灯。Light1 为 Red,Light2 为 Green,greenLightRequested 为 true,greenLightLocked 为 true。

- 在信号灯 2 为绿色 120 秒(MINGREENDELAY 的默认值)后,信号灯 2 变为黄色。Light1 为 Red,Light2 为 Yellow,greenLightRequested 为 true,greenLightLocked 为 true。

- 15 秒(YELLOWDELAY 的默认值)后,信号灯 2 变为红色,并将 greenLightLocked 设置为 false。然后,信号灯 1 变为绿色,取消绿灯请求,并将 greenLightLocked 设置为 true。Light1 为 Green,Light2 为 Red,greenLightRequested 为 false,greenLightLocked 变为 false 然后为 true。

- 6 秒(REDDELAY 的默认值)后,信号灯 2 请求绿灯。Light1 为 Green,Light2 为 Red,greenLightRequested 为 true,greenLightLocked 为 true。

重复循环,直到仿真于 秒处结束。



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有